机器学习——几种分类算法的汇总
机器学习——几种分类算法的汇总
参考博客:http://www.apachecn.org/map/179.html
参考博客写的很全面,也有例子,我这算是转载缩减记录方便自己记忆,有想参考的朋友可以参照原博客学习。
分类算法
分类:将实例数据划到合适的类别中。
标称型:标称型目标变量的结果只在有限目标集中取值,如真与假(标称型目标变量主要用于分类)
数值型:数值型目标变量则可以从无限的数值集合中取值,如0.100,42.001等 (数值型目标变量主要用于回归分析)
整个开发流程:收集数据——准备数据——分析数据——训练算法——测试算法——使用算法
开发流程:
收集数据:收集样本数据
准备数据:注意样本格式
分析数据:为了确保数据集中是否存在垃圾数据。(若存在算法可处理的数据格式或可信任的数据源,则可以跳过该步骤;另外该步骤需要人工干预,会降低自动化系统价值)
训练算法:无监督算法无目标变量,可跳过该步骤
测试算法:评估算法效果
使用算法:将机器学习算饭转化为应用程序
1.k-近邻(KNN)
工作原理:
开发流程:
收集数据:任何方法
准备数据:距离计算所需的数值,最好是结构化的数据格式
分析数据:任何方法
训练算法:跳过
测试算法:计算错误率
使用算法:输入样本数据和结构化的输出结果,然后运行k-近邻算法判断输入数据分类属于哪个分类,最后对计算出的分类执行后续处理。
算法特点:
优点:精度高、对异常值不敏感、无数据输入假定
缺点:计算复杂度高、空间复杂度高
适用数据范围:数值型和标称型
2.决策树(Decision Tree)
算法主要用来处理分类问题,是最经常使用的数据挖掘算法之一。
概念:
熵(entropy):指体系的混乱程度。
信息熵:是一种信息的度量方式,表示信息的混乱程度。
信息增益:在划分数据集前后信息发生的变化。
开发流程:
收集数据:任何方法
准备数据:树构造算法只适用于标称型数据,因此数值型数据必须离散化
分析数据:任何方法,构造树完成后,应检查图形是都符合预期
训练算法:构造树的数据结构
测试算法:使用经验树计算错误率
使用算法:任何监督学习算法(决策树)
算法特点:
优点:计算复杂度不高,输出结果易于理解,对中间值的缺失不敏感,可以处理不相关特征数据。
缺点:可能会产生过度匹配问题。
适用数据类型:数值型和标称型
3.朴素贝叶斯
朴素贝叶斯主要应用于文档的自动分类
收集数据:任何方法
准备数据:需要数值型或布尔型数据
分析数据:有大量特征时,绘制特征作用不大,此时使用脂肪头疼效果更好。
训练算法:计算不同的独立特征的条件概率
测试算法:计算错误率
使用算法:一个常见的朴素贝叶斯应是文档分类(也可不是)。
算法特点:
优点:在数据较少的情况下依然有效,可以处理多类别问题。
缺点:对于输入数据的准备方式较为敏感。
适用数据类型:标称型数据
4.逻辑回归
该算法是根据现有数据对分类边界线建立回归公式,以此进行分类。
概念:
回归:用一条直线拟合数据点的过程,而拟合就是可以很好的将每个数据点用一条直线连接起来,连接数据点较少的过程叫做欠拟合,用曲线将所有数据点完整连接的过程叫做过拟合。
sigmoid函数:调整得到一个0~1之间的数值(大于0.5为1类)
梯度上升法:为了寻找最佳参数
开发流程:
收集数据:任何方法
准备数据:结构化数据格式(距离计算需要数值型数据)
分析数据:任何方法
训练算法:训练数据直到找到最佳的分类回归系数
测试算法:一旦训练步骤完成,分类将会很快
使用算法:首先,对输入数据进行转化,得到其对应结构化数值;其次基于训练好的回归系数对数值进行简单的回归计算,判定其类别。
算法特点:
优点:计算代价不高,易于理解和实现
缺点:容易欠拟合,分类精度可能不高
使用数据类型:数值型和标称型数据
5.支持向量机
该算法是一个二类分类器
概念
支持向量(Support Vector):分离超平面最近的那些点。
机(Machine):表示一种算法,而不是表示机器。
超平面:分类的决策边界。n维需要n-1维的超平面分隔。
步骤:
1.寻找最大分类间距
2.通过拉格朗日函数求优化问题
开发流程:
收集数据:任何方法
准备数据:数值型数据
分析数据:有助于可视化分隔超平面
训练算法:训练数据实现两个参数的调优
测试算法:简单计算过程
使用算法:几乎所有的分类问题都可以用SVM。
算法特点:
优点:计算代价不高,易于理解和实现
缺点:容易欠拟合,分类精度可能不高
使用数据类型:数值型和标称型数据
****************************************************************
集成算法(ensemble method):对其他算法进行组合的一种形式
1.投票算法(bagging):基于数据随机重抽样分类器构造的方法。例如随机森林(random forest)
2.再学习(boosting):基于所有分类器的加权求和方法。
bagging和boosting的区别:
1.bagging是一种与boosting所使用的多个分类器的类型(数据量和特征量)都是一致的。
2.bagging是由不同的分类器(数据和特征随机化)经过训练,综合得出的出现最多的分类结果;boosting是通过调整已有分类器错分的那些数据来获得新的分类器,得出目前最优的结果。
3.bagging中的分类器权重是相等的;而boosting中的分类器加权求和,所以权重并不相等,每个权重代表的是其对应分类器的上一轮迭代中的成功过度。
****************************************************************
6.随机森林
随机森林指的是利用多棵树对样本进行训练并预测的一种分类器。
开发流程:
收集数据:任何方法
准备数据:转换样本集
分析数据:任何方法
训练算法:通过数据随机化和特征随机化,进行多实例的分类评估
测试算法:计算错误率
使用算法:输入样本数据,然后运行随机森林算法,判断输入数据分类属于哪个分类,最后对计算出的分类执行后续处理。
算法特点:
优点:几乎无需输入准备、可实现隐式特征选择、训练速度非常快、其他模型很难超越。
缺点:劣势在于模型大小、是个很难去解释的黑盒子。
使用数据类型:数值型和标称型数据